#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PE估值分析系统 - 快速启动脚本
适合不熟悉编程的用户使用
"""

import os
import sys

def check_dependencies():
    """检查依赖包是否安装"""
    required_packages = [
        'akshare', 'pandas', 'numpy', 'matplotlib', 
        'seaborn', 'scipy', 'plotly'
    ]
    
    missing_packages = []
    
    for package in required_packages:
        try:
            __import__(package)
        except ImportError:
            missing_packages.append(package)
    
    if missing_packages:
        print("[错误] 缺少以下依赖包:")
        for pkg in missing_packages:
            print(f"   - {pkg}")
        print("\n请运行以下命令安装:")
        print("pip install " + " ".join(missing_packages))
        return False

    print("[成功] 所有依赖包已安装")
    return True

def show_menu():
    """显示主菜单"""
    print("\n" + "="*60)
    print("PE估值分析系统 - 快速启动")
    print("="*60)
    print("请选择您要进行的操作:")
    print()
    print("1. [茅台] 分析贵州茅台(600519) - 推荐新手")
    print("2. [查询] 分析其他股票")
    print("3. [说明] 查看使用说明")
    print("4. [测试] 运行系统测试")
    print("5. [退出] 退出系统")
    print()

def analyze_maotai():
    """分析贵州茅台"""
    print("\n[茅台] 正在启动贵州茅台分析...")
    print("预计需要30-60秒，请耐心等待...")

    try:
        os.system("python query_600519.py")
    except Exception as e:
        print(f"[错误] 分析失败: {e}")
        print("请检查文件是否存在: query_600519.py")

def analyze_other_stock():
    """分析其他股票"""
    print("\n🔍 股票代码查询")
    print("-" * 30)
    print("常用股票代码:")
    print("600519 - 贵州茅台")
    print("000858 - 五粮液")
    print("600036 - 招商银行")
    print("000002 - 万科A")
    print("600900 - 长江电力")
    print("000001 - 平安银行")
    print()
    
    stock_code = input("请输入6位股票代码: ").strip()
    
    if not stock_code:
        print("❌ 股票代码不能为空")
        return
    
    if len(stock_code) != 6 or not stock_code.isdigit():
        print("❌ 请输入正确的6位数字股票代码")
        return
    
    print(f"\n📈 正在分析股票 {stock_code}...")
    print("预计需要30-60秒，请耐心等待...")
    
    try:
        from pe_analysis_system import PEAnalysisSystem
        
        analyzer = PEAnalysisSystem()
        success = analyzer.run_complete_analysis(stock_code, start_date="20200101")
        
        if success:
            print("\n" + "="*50)
            print("📊 分析结果")
            print("="*50)
            print(analyzer.get_analysis_summary())
            
            show_chart = input("\n是否显示图表? (y/n): ").strip().lower()
            if show_chart == 'y':
                analyzer.plot_pe_trend_analysis()
        else:
            print("❌ 分析失败，请检查股票代码是否正确")
    
    except Exception as e:
        print(f"❌ 分析过程中出错: {e}")

def show_instructions():
    """显示使用说明"""
    print("\n" + "="*60)
    print("📚 PE估值分析系统使用说明")
    print("="*60)
    
    instructions = """
🎯 系统功能:
   基于正态分布理论分析股票PE估值水平
   
📊 分析内容:
   • 当前PE与历史PE对比
   • PE分位数计算
   • 估值区间判断
   • 投资建议生成
   
🎨 图表展示:
   • PE历史走势图
   • PE分布直方图  
   • 市值与业绩对比
   • PE历史分位数图
   
✅ 适用股票:
   • 盈利稳定的成熟公司
   • 银行、消费、公用事业等行业
   
❌ 不适用:
   • 高成长科技股
   • 周期性行业
   • 亏损企业
   
📈 估值判断标准:
   🟢 极度低估: PE < μ-σ (历史机会)
   🟡 低估: μ-σ ≤ PE < μ (适合买入)
   🔵 合理: μ ≤ PE < μ+σ (中性观点)
   🟠 高估: μ+σ ≤ PE < μ+2σ (谨慎投资)
   🔴 极度高估: PE ≥ μ+2σ (规避风险)
   
⚠️  风险提示:
   • 本系统仅供参考，不构成投资建议
   • 投资需结合基本面分析
   • 股市有风险，投资需谨慎
"""
    
    print(instructions)

def run_test():
    """运行系统测试"""
    print("\n🧪 正在运行系统测试...")
    
    try:
        os.system("python simple_test.py")
    except Exception as e:
        print(f"❌ 测试失败: {e}")
        print("请检查文件是否存在: simple_test.py")

def main():
    """主函数"""
    print("[启动] PE估值分析系统启动中...")

    # 检查依赖
    if not check_dependencies():
        input("\n按回车键退出...")
        return

    while True:
        show_menu()

        try:
            choice = input("请输入选择 (1-5): ").strip()

            if choice == '1':
                analyze_maotai()
            elif choice == '2':
                analyze_other_stock()
            elif choice == '3':
                show_instructions()
            elif choice == '4':
                run_test()
            elif choice == '5':
                print("\n[退出] 感谢使用PE估值分析系统！")
                break
            else:
                print("[错误] 无效选择，请输入1-5之间的数字")

        except KeyboardInterrupt:
            print("\n\n[退出] 用户取消操作，退出系统")
            break
        except Exception as e:
            print(f"[错误] 系统错误: {e}")

        input("\n按回车键继续...")

if __name__ == "__main__":
    main()
